"""
定义用户管理序列化器
"""


from rest_framework import serializers
from users.models import User

# [
#   {
#     'id': 1,
#     'username': 'weiwei',
#     'mobile': '15156912368',
#     'email': '1@2.com'
#   }
#   {}...
# ]

class UserModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = [
            'id', # id自动映射，默认值参与序列化read_only=True

            'username',
            'mobile',
            'email',

            'password', # 增加password用与反序列化校验, write_only=True
        ]
        extra_kwargs = {
            'username': {'min_length': 5, 'max_length': 20},
            'password': {"write_only": True, 'min_length': 5, 'max_length': 20}
        }

    # 模型类序列化器已经定义了create方法，用于模型类对象的新建，我们无需自定义
    # 但是，由于模型类序列化器的create方法构建时：1、不会加密；2、is_staff默认为False
    def create(self, validated_data):
        # 自定义创建模型类对象
        # 模型类管理器中create_superuser方法时用于创建超级管理员的用户(1、自动密码加密；2、is_staff为True)
        instance = self.Meta.model.objects.create_superuser(**validated_data)

        # 序列化器的create方法新建完之后，一定要返回新建的对象
        return instance




















